# Flutter: Logical Operators

We can use logical operators to invert or combine two or more boolean expressions. In the following table, we can see the logical operators in Dart:

Name | Operator | Description |
---|---|---|

Not | `!a` | Invert the value of `a` . Example: `true` will become `false` |

Or | `a || b` | Combine two boolean expressions. If one of them is `true` then returns `true` |

And | `a && b` | Combine two boolean expressions. If one of them is `false` then returns `false` |

## Not: !

The **not operator (a!)** invert the variable's value. If it's `true`

, then will become `false`

. Example:

```
var a = true;
print(a); // prints true
print(!a); // prints false
```

## And: &&

The **and operator ( && )** combines two boolean expressions. If one is `false`

, it evaluates to `false`

. If both are `true`

, it evaluates to `true`

. Example:

```
final alice = 25;
final rebecca = 16;
if (alice >= 18 && rebecca >= 18) {
print('Alice and Rebecca are 18 or more years old');
} else {
print('Alice and/or Rebecca are less then 18 years old');
}
```

The previous code will print `Alice and/or Rebecca are less than 18 years old`

because Rebecca is younger than 18, so the **and operator** returned `false`

, and the code inside the else was executed.

### OR: ||

The **or operator ( || )** combines two boolean expressions. If one is `true`

, it evaluates to `true`

. If both are `false`

, it evaluates to `false`

. Example:

```
final alice = 25;
final rebecca = 16;
if (alice >= 18 || rebecca >= 18) {
print('Alice or Rebecca are 18 or more years old');
} else {
print('Alice and Rebecca are less then 18 years old');
}
```

The previous code will print `Alice or Rebecca are 18 or more years old`

because Alice is older than 18, so the **or operator** returned `true`

, and the code inside the if was executed.

Let's run the previous examples in DartPad: