# Euphoria - Short Circuit Evaluation

When a condition is tested by if, elsif, until, or while using and or or operators, a short-circuit evaluation will be used. For example −

```if a < 0 and b > 0 then
-- block of code
end if
```

If a < 0 is false, then Euphoria will not bother to test if b is greater than 0. It will know that the overall result is false regardless. Similarly −

```if a < 0 or b > 0 then
-- block of code
end if
```

if a < 0 is true, then Euphoria will immediately decide that the result true, without testing the value of b, since the result of this test would be irrelevant.

## In General:

Whenever we have a condition of the form −

```A and B
```

Where A and B can be any two expressions, Euphoria will take a short-cut when A is false and immediately make the overall result false, without even looking at expression B.

Similarly, Whenever we have a condition of the form −

```A or  B
```

When A is true, Euphoria will skip the evaluation of expression B, and declare the result to be true.

Short-circuit evaluation of and and or takes place for if, elsif, until and while conditions only. It is not used in other contexts. For example −

```x = 1 or {1,2,3,4,5} -- x should be set to {1,1,1,1,1}
```

If short-circuiting were used here, we would set x to 1, and not even look at {1,2,3,4,5}, which would be wrong.

Thus, short-circuiting can be used in if/elsif/until/while conditions because we only care if the result is true or false, and conditions are required to produce an atom as a result.