Operator precedence
All operators have the same precedence, which is controlled by the lack of whitespace between the operands.
1+2 * 3+4 # means: (1+2) * (3+4)
In the above example, the lack of whitespace between 1
, +
and 2
, classifies the operation as a distinct expression.
The implications are the following:
var n = 1 + 2 # incorrect -- it means: (var n = 1) + 2
var n = 1+2 # correct
var n = (1 + 2) # correct
When no precedence is defined, the order of operations is from left to right:
1 + 2 * 3 # means: ((1 + 2) * 3)
On the other hand, when too much precedence is defined, the order is from right to left:
1+2*3 # means: (1 + (2 * 3))
The precedence can also be controlled by backslashing or preceding the operator with a dot.
1 + 2 \* 3 # means: (1 + (2 * 3))
1 + 2 .* 3 # =//=