Precedence: Difference between revisions
>JulienDethurens |
>JulienDethurens No edit summary |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Introduction == | == Introduction == | ||
Operators take | [[Operators]] take precedence over another in a certain order in Lua. This can affect the outcome of your formulae. | ||
== Discussion == | == Discussion == | ||
Here is what the Lua 5.1 Reference Manual says about operator precedence: | |||
<blockquote cite="http://www.lua.org/manual/5.1/manual.html#2.5.6"> | |||
Operator precedence in Lua follows the table below, | |||
from lower to higher priority: | |||
<pre> | <pre> | ||
or | |||
and | |||
< > <= >= ~= == | |||
.. | |||
+ - | |||
* / % | |||
not # - (unary) | |||
^ | |||
</pre> | </pre> | ||
For example: | As usual, you can use parentheses to change the precedences of an expression. | ||
print(-3^2) | The concatenation ('..') and exponentiation ('^') | ||
Will result in: | operators are right associative. | ||
-9 | All other binary operators are left associative. | ||
Because 3 is raised (^) to the second power | </blockquote> | ||
For example: | |||
{{code|=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: | |||
{{code|=print((-3)^2)}} | |||
Will result in: 9 | |||
Here's another example: | |||
{{code|=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, | |||
{{code|=print (0 < 1 and 2 <= 7)}} | |||
print( | |||
Will result in: true | |||
Will result in: | |||
Notice that the inequalities are evaluated before the '''and'''. | |||
Notice that the inequalities are evaluated before the | |||
==See Also== | ==See Also== | ||
*[http://www.lua.org/manual/5.1/manual.html#2.5.6 Lua 5.1 Reference Manual: Precedence] | *[http://www.lua.org/manual/5.1/manual.html#2.5.6 Lua 5.1 Reference Manual: Precedence] | ||
*[http://www.lua.org/pil/3.5.html Programming in Lua: Precedence] | *[http://www.lua.org/pil/3.5.html Programming in Lua: Precedence] |
Latest revision as of 01:59, 28 March 2012
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.