## About

Boolean operator manipultes truthy and falsy values that can come from:

- a Boolean value
- the interpretation of a non-boolean value (ie javascript (truthy/falsy))
- or the result of a comparison expression.

Boolean operator has the same than arithmetic bitewise operator

## Syntax

General syntax is

`lhs operator rhs`

where:

- lhs stands for left-hand side operand
- operator a boolean/logical operator
- rhs stands for right-hand side operand

### Negation

Any Boolean expression (such as the outcome of a comparison operator may be negated with not.

Syntax example:

```
not(expression)
# or
!(expression)
```

### Operator

Operator | Description | Logic |
---|---|---|

&& | Logical AND | If rhs is falsy, the expression evaluates to lhs |

|| | Logical OR | if lhs is truthy, the expression evaluates to lhs, otherwise, it evaluates to rhs |

& | Bitwise AND | |

| | Bitwise OR | |

^ | Bitwise exclusive OR |

&& and || exhibit short-circuiting“ behavior, which means that the second operand is evaluated only if needed

## Computer

In computer, a logical operator is implemented by a logic gate

## Order of precedence

Grammar - (Order of (operations|precedence)|operator precedence)

And and OR have normally lower priorities than comparison operators

Between them, not has the highest priority and or the lowest, so that:

`A and not B or C`

is equivalent to

`(A and (not B)) or C`

.

## Illustration

And, Or and Xor seem incorrect.

^{1)}