# Expressions

Any expression in o42a either constructs a new object, or addresses an existing one.

An expression is one of:

- string;
- number;
- reference, which addresses some object;
- unary or binary operator;
- object constructor expression;
- array constructor;
- phrase;
- or grouping expression.

## Grouping Expression

A grouping expression is any expression enclosed into parentheses. It can be used e.g. to change the priority of operators:

```
(a + b) * c ~~ Multiply the sum of `a` and `b` by `c`.
```

There is a special syntax to avoid the use of parentheses at the very beginning of expression:

```
Some expression\ another expression
```

which is the same as

```
(Some expression) another expression
```

Such syntax is especially useful with combination of subsequent phrases, in order to distinguish one from another:

```
"Some string": substring _from [5]\ [1] ~~ "t"
~~ This is the same as following:
("Some string": substring _from [5]) [1]
```

Note that the grouping expression has higher priority than any operator, so it works for its operands, not for the whole operator:

```
a + b\ c * d
~~ The above expression is the same as:
a + (b\ c) * d
~~ or, more precisely:
a + ((b _c) * d)
```