Языки программирования реализуют концепцию истинных и ложных типов значений, чтобы использовать их в булевой логике . Некоторые значения считаются false , а другие считаются true при использовании в логических операциях и факте, что последнее значение функции - или выражение - возвращается, позволяет нам замыкать и разветвлять наши функции, как указано в предыдущем ответе.
Это верно для каждого языка, который я знаю.
В Elixir (1.7.3, скомпилированном с Erlang / OTP 21) я думаю, что у нас стабильное поведение, даже с нулевым числом:
(0 || false) == 0 # true
(0 || false) === 0 # true
И просто для сравнения, в Javascript (Google Chrome v74):
(0 || false) == 0 // true
(0 || false) === 0 // false