Precedence: Difference between revisions

From Legacy Roblox Wiki
Jump to navigationJump to search
>JulienDethurens
→‎Discussion: The precedence "shema", which was taken from pil, was incomplete. Replaced it by the one in the Reference Manual and did some other changes. :P
>JulienDethurens
→‎Discussion: The precedence "shema", which was taken from pil, was incomplete. Replaced it by the one in the Reference Manual and did some other changes. :P
(No difference)

Revision as of 04:52, 21 February 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.

See Also