Precedence
Introduction
Operators take precedence over another in a certain order in Lua. This can affect the outcome of your formulae.
Discussion
Here is what the Lua 5.1 Reference Manual says about operator precedence:
Operator precedence in Lua follows the table below, from lower to higher priority:
or and < > <= >= ~= == .. + - * / % not # - (unary) ^As usual, you can use parentheses to change the precedences of an expression. The concatenation ('..') and exponentiation ('^') operators are right associative. All other binary operators are left associative.
For example:
print(-3^2)
Will result in: -9
Because 3 is raised (^) to the second power first and then the sign of 9 is changed from positive to negative.
Notice that if we explicitly use parentheses, however, the outcome is different:
print((-3)^2)
Will result in: 9
Here's another example:
print(3 .. 2^2)
Will result in: 34 Notice that 2^2 is evaluated (2^2=4) before .. , giving us the value of 34.
Finally,
print (0 < 1 and 2 <= 7)
Will result in: true
Notice that the inequalities are evaluated before the and.