# Boolean expressions: AND and OR

The expression `E1 and E2`

returns true if the *effective boolean values*
of `E1`

and `E2`

are both true.

The expression `E1 or E2`

returns true if the *effective boolean values* of
either or both of `E1`

and `E2`

are true.

The specification allows the operands to be evaluated in either order, but Saxon will
normally evaluate them left-to-right, which means if you write something like ```
$a
instance of xs:integer and $x = (1 to $a)
```

, then you won't get an error if
`$a`

is not an integer. But the specification doesn't guarantee this.