1. Home
2. Docs
3. Lua Tutorials
4. Hello World!
5. Lua Keywords

# Lua Keywords

We’ve covered the majority of the Lua keywords, but there are a few left that we have to cover. We’ll cover the final keywords that aren’t loop/table-based in this tutorial, and we’ll cover tables and loops in the next! We only have three to touch on.

#### If, Elseif, Else

So, we’ve seen conditional statements – if these things, then do this. But we haven’t covered their full usage!

First thing’s first – if you want stuff to happen based on a condition, you use that word I just used twice – `if`.

``````    local var = 5

if var == 5 then
-- [[ do stuff ]]
end``````

Note that `then` defines a new scope here, and that scope ends at, well, `end`. The conditional is the statement between `if` and `then`.

``````    local var = 5

function example()
if var == 5 then -- if var is equivalent to 5 then...
out("This is 5!")
return
end
out("Not 5!")
end

example() → This is 5!

var = 10

example() → Not 5!``````

In this example, we’re checking whether var is `5`. If it is, we print “This is 5!”; if it isn’t, we print “Not 5!”. We prevent the printing of both of them by using the `return` – otherwise, if the var were `5`both outs would be called.

We can also do this by using the `else` keyword:

``````    local var = 5

function example()
if var == 5 then
out("This is 5!")
else
out("Not 5!")
end
end

example() → This is 5!

var = 10

example() → Not 5!``````

Functionally, exactly the same. However, it’s prettier to look at, and makes more sense to read. Do note that `else` also creates its own scope; in this instance, there is a scope between `then` and `else`; and another between `else` and `end`.

What if we wanted to check for more than one specific condition? We can use `elseif`!

``````    local var = 5

function example()
if var == 5 then
out("This is 5!")
elseif var == 7 then
out("This is 7!")
else
out("Not 5 or 7!")
end
end

example() → This is 5!

var = 7

example() → This is 7!

var = 10

example() → Not 5 or 7!``````

We can use more than one elseif, too. Only one `if` or `else` within that block between `if` and the first `end`, though.

Do keep in mind that whichever “path” works first is the one that will be used, and the ones following it will be ignored, until the `end` of the conditional.

``````    local var = 10

function example()
if var > 5 then
out("This is greater than 5!")
elseif var == 5 then
out("This is 5!")
elseif var == 7 then
out("This is 7!")
else
out("Less than 5, not 7!")
end
end

example() → This is greater than 5!

var = 5

example() → This is 5!

var = 7

example() → Less than 5, not 7!``````

Even though the var matches the second conditional statement – `var == 7` – for the final assignment, it also matches the first condition, so that’s the one and only path the code takes here.

Do note that you can do just one if and elseif, or an if and an else, or all three, or just an if, or like twenty elseif’s. Though that’s bad code, don’t do that.

#### End, Then, Do

The keyword `end` is needed to denote the end of a scope, when that scope is defined by something other than the entire file. Each of the following keywords need an `end` to finish their scope:

• then
• do
• function

And the keyword `then` is needed after the conditional statement for an `if` or `elseif`.

The keyword `do` is used in two instances; one, to create a new scope without needing any other keywords (see example below).

``````
local var = 5

do
local var = 10
out(var) → 10
end

out(var) → 5``````

The other, and more common, usage of `do` is to attach it to loop keywords. Read on to the next chapter!