# Python Operators

Python operators are used to perform operations on variables and values.

Python operators are as follow:

* Arithmetic operators
* Assignment operators
* Comparison operators
* Logical operators
* Identity operators
* Membership operators
* Bitwise operators

### Arithmetic operators

| Operator | Name           | Example  |
| -------- | -------------- | -------- |
| +        | Addition       | 2 + 2    |
| -        | Subtraction    | 2 - 2    |
| \*       | Multiplication | 2 \* 2   |
| /        | Division       | 2 / 2    |
| %        | Modulus        | 5 % 2    |
| \*\*     | Exponentiation | 2 \*\* 2 |
| //       | Floor division | 2 // 2   |

### Python Assignment Operators

Assignment operators are used to assign values to variables

| Operator | Example   | Same As      |
| -------- | --------- | ------------ |
| =        | x = 2     | x = 2        |
| +=       | x += 2    | x = x + 2    |
| -=       | x -= 2    | x = x - 2    |
| \*=      | x \*= 2   | x = x \* 2   |
| /=       | x /= 2    | x = x / 2    |
| %=       | x %= 2    | x = x % 2    |
| //=      | x //= 2   | x = x // 2   |
| \*\*=    | x \*\*= 2 | x = x \*\* 2 |
| &=       | x &= 2    | x = x & 2    |
| \|=      | x \|= 2   | x = x \| 2   |
| ^=       | x ^= 2    | x = x ^ 2    |
| >>=      | x >>= 2   | x = x >> 2   |
| <<=      | x <<= 2   | x = x << 2   |

### Python Comparison Operators

Comparison operators are used to compare two values

| Operator | Name                     | Example |
| -------- | ------------------------ | ------- |
| ==       | Equal                    | 2 == 2  |
| !=       | Not equal                | 2 != 3  |
| >        | Greater than             | 2 > 1   |
| <        | Less than                | 2 < 3   |
| >=       | Greater than or equal to | 2 >= 3  |
| <=       | Less than or equal to    | 2 <= 1  |

### Python Logical Operators

Logical operators are used to combine conditional statements

| Operator | Description                                             | Example               |
| -------- | ------------------------------------------------------- | --------------------- |
| and      | Returns True if both statements are true                | x < 5 and  x < 10     |
| or       | Returns True if one of the statements is true           | x < 5 or x < 4        |
| not      | Reverse the result, returns False if the result is true | not(x < 5 and x < 10) |

### Python Identity Operators

Identity operators are used to compare the objects, not if they are equal, but if they are actually the same object, with the same memory location

| Operator | Description                                            | Example    |
| -------- | ------------------------------------------------------ | ---------- |
| is       | Returns True if both variables are the same object     | x is y     |
| is not   | Returns True if both variables are not the same object | x is not y |

### Python Membership Operators

Membership operators are used to test if a sequence is presented in an object

| Operator | Description                                                                      | Example    |
| -------- | -------------------------------------------------------------------------------- | ---------- |
| in       | Returns True if a sequence with the specified value is present in the object     | x in y     |
| not in   | Returns True if a sequence with the specified value is not present in the object | x not in y |

### Python Bitwise Operators

Bitwise operators are used to compare (binary) numbers:

| Operator | Name                 | Description                                                                                             |
| -------- | -------------------- | ------------------------------------------------------------------------------------------------------- |
| &        | AND                  | Sets each bit to 1 if both bits are 1                                                                   |
| \|       | OR                   | Sets each bit to 1 if one of two bits is 1                                                              |
| ^        | XOR                  | Sets each bit to 1 if only one of two bits is 1                                                         |
| \~       | NOT                  | Inverts all the bits                                                                                    |
| <<       | Zero fill left shift | Shift left by pushing zeros in from the right and let the leftmost bits fall off                        |
| >>       | Signed right shift   | Shift right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off |

You can try play with any of the operators above in [W3School](https://www.w3schools.com/python/python_operators.asp).
