The conditional operator calculates the values of b and c, then checks whether condition a is met, and then returns the corresponding value. If "b" or "c" is an arrayJoin() function, each row will be replicated regardless of the "a" condition.
## Conditional expression
```sql
CASE [x]
WHEN a THEN b
[WHEN ... THEN ...]
ELSE c
END
```
If "x" is specified, then transform(x, \[a, ...\], \[b, ...\], c). Otherwise – multiIf(a, b, ..., c).
## Concatenation operator
`s1 || s2`– The `concat(s1, s2) function.`
## Lambda creation operator
`x -> expr`– The `lambda(x, expr) function.`
The following operators do not have a priority, since they are brackets:
## Array creation operator
`[x1, ...]`– The `array(x1, ...) function.`
## Tuple creation operator
`(x1, x2, ...)`– The `tuple(x2, x2, ...) function.`
## Associativity
All binary operators have left associativity. For example, `1 + 2 + 3` is transformed to `plus(plus(1, 2), 3)`.
Sometimes this doesn't work the way you expect. For example, ` SELECT 4 > 2 > 3` will result in 0.
For efficiency, the `and` and `or` functions accept any number of arguments. The corresponding chains of `AND` and `OR` operators are transformed to a single call of these functions.