Basics
Let's first take a look at the basics, addition, subtraction, multiplication, and division. These work as one would expect:
local x = 2
local y = 3
print(x + y) -- 5
print(x - y) -- -1
print(x * y) -- 6
print(x / y) -- 0.66666666666667
Negation
Whereas almost all languages allow a value to be negated by multiplying it by -1
to negative it,
Lua additionally allows a value to be negated by simply prefixing it with -
.
local x = 2
local y = 3
print(-x) -- -2
print(-y) -- -3
print(x + -y) -- -1
Note that negation occurs independently of other operators, as shown in the last case. We will learn more about this in a moment when we discuss precedence.
Exponentiation
Lua supports exponentiation with the ^
operator:
local x = 2
local y = 3
print(x ^ y) -- 8.0
print(y ^ -x) -- 0.11111111111111
Modulus
Like many programming languages
modular arithmetic in Lua uses the
%
operator. While the topic of modular arithmetic is well outside the scope of learning about
Lua, this is a useful but often misunderstood function, so let's give it a quick review.
To calculate a % b, one first finds the largest integer k
such that multiplying k
by b
is less
than a
, then the result is the difference or remainder, a - kb
.
local x = 2
local y = 3
print(x % y) -- 2
print(y % x) -- 1
In the first example y
is greater than x
, so the remainder is simply x
. In the second example
the largest integer k
is 1
, so that the remainder is 3-2=1
.
Bitwise
Lua also supports the basic bitwise operations. While bitwise operations are very important in computing, they are used in a fairly narrow range of applications so we won't spend too much time on them other than to show which operations are supported and a simple example of how they work:
local x = 2
local y = 3
print(x & y) -- 2
print(x | y) -- 3
print(x ~ y) -- 1
You can learn more about bitwise operations here.