RUBY TUTORIAL

## Unless

Before we start with `unless`, let's see some basic things which we have already seen before. We are doing this because, it explains your question Why Unless? So, we see about `or` operator, `if` keyword and `unless` keyword. `OR` operator returns true, even if one of the condition is true.

In the above code a variable weight is assigned with a value 32. Then a condition is checked using `OR` operator.

If the weight is less than 35 or if the weight is greater than 70 it displays "You need to see a doctor".

Now, the first condition is checked weight < 35, this condition becomes true because the value of weight is 32 and `OR` operator doesn't check the second condition if the first condition is true. It simply returns true.

When the condition is true, it displays the message "You need to see a doctor". Now, consider the value of weight as 87.

The first condition is checked weight < 35, the condition fails and it checks the second condition weight > 70, the condition is true, so the message is displayed. Now, what if the weight contains value between 35 and 70?

As usual, the first condition is checked, it fails and the second condition is checked and it also fails. Therefore, the `puts` statement is not executed.

When we talk about `if keyword`, it is used to make a decision, whether to execute the set of code or not. But, what if wanted to test the opposite of if? That is, you want to execute the code only when the condition is false. This is where `unless` comes into picture.

This program displays the message "You're eligible to Vote" when the age is greater than 18. The value stored in the variable age is 23.

When the condition is checked, it returns false and the puts statement is executed. This might be confusing.

`Remember that unless is opposite of if.`

You, can read this code statement as You're eligible to vote if your age is not less than 18. That is, it is similar to `puts "You're eligible to Vote" if age > 18`

If you're confused in reading the `unless` statement, simply read it in the opposite way of `if` statement.