Справочное руководство по языку Lua 5.1 :: 2.5.3 - Получение длины
2.5.3 – Логические операции
В Lua это операции and (и), or (или), и not (не). Так же, как и в управляющих конструкциях (§2.4.4), все логические операции рассматривают false и nil как ложь, а все остальное как истину.
Операция отрицания not всегда возвращает false или true. Операция конъюнкции and возвращает свой первый параметр, если его значение false или nil; в противном случае and возвращает второй параметр. Оператор дизъюнкции or возвращает первый параметр, если его значение отлично от nil и false; в противном случае or возвращает второй параметр. Оба оператора вычисляют второй операнд только в случае нееобходимости.
Примеры:
10 or 20 --> 10
10 or error() --> 10
nil or "a" --> "a"
nil and 10 --> nil
false and error() --> false
false and nil --> false
false or nil --> nil
10 and 20 --> 20
(В данном руководстве, --> указывает на результат предшествовающего выражения.)