# 2.3. Expressions¶

The *right hand* side of the assignment statement doesn’t have to be a value. It can be *an
arithmetic expression*, like `2 * 2`

. The expression will be evaluated and the result from the
expression will be stored in the variable.

## 2.3.1. Operations¶

You can use all the standard mathematical operations, you just have to know the right symbols
to use: `/`

means divsion; `*`

means times; `**`

means “to the power of”.

## 2.3.2. Division and Integer Division¶

This book is using Python 3 which returns a decimal value - 1.66666666666667 - from a calculation like
`5 / 3`

. If we executed `5 / 3`

in many programming languages (or older version so Python)
it would result in just 1 because we can only divide 5 by 3 one whole time. This form of
division is known as **integer division** and is what you probably learned in elementary school
before you learned long division.

There are times when we want to do integer division as part of solving a problem. If I want to figure out how many
whole feet are in 37 inches, I would divide 37 by 12. From it, I want an answer of just 3,
not 3.083333333333333. To do integer division in Python, we use `//`

. Compare the two results
in the code sample below. The first is done using normal (decimal) division. The second is
from doing integer division:

Note

Integer division always just ignores the remainder - it does not round the answer.
`5 // 3`

is just 1.

## 2.3.3. Modulo¶

If you are doing integer division, you may also care about the remainder. When I divide
do `37/12`

to figure out the number of feet in 37 inches, I get 3. But maybe I also
want to know that there is one inch left over.

You may not be familiar with the **modulo** (remainder) operator `%`

. It returns the remainder
when you divide the first number by the second. In the case of `4 % 2`

, `2`

goes
into `4`

two times with a remainder
of `0`

. The result of `5 % 2`

would be `1`

since `2`

goes into `5`

, two times with a
remainder of `1`

.

Note

The result of `x % y`

when `x`

is smaller than `y`

is always `x`

. The value `y`

can’t go into `x`

at all, since `x`

is smaller than `y`

, so the result is just `x`

.
So if you see `2 % 3`

the result is `2`

. Edit the code above to try this for yourself.
Change the code to `result = 2 % 3`

and see what that prints when it is run.