## Operators

Now that we know that functions are a way of taking a number of inputs and producing an output, we should look again at what happens when we write:

x = 2 + 3

print(x)


5

This is just a pretty way of calling an “add” function. Things would be more symmetrical if add were actually written

x = +(2, 3)


Where ‘+’ is just the name of the name of the adding function.

In python, these functions do exist, but they’re actually methods of the first input: they’re the mysterious __ functions we saw earlier (Two underscores.)

x.__add__(7)


12

We call these symbols, +, - etc, “operators”.

The meaning of an operator varies for different types:

"Hello" + "Goodbye"


‘HelloGoodbye’

[2, 3, 4] + [5, 6]


[2, 3, 4, 5, 6]

Sometimes we get an error when a type doesn’t have an operator:

7 - 2


5

For example:

[2, 3, 4] - [5, 6]


—————————————————————————

TypeError Traceback (most recent call last)

<ipython-input-38-4627195e7799> in <module>()

—-> 1 [2, 3, 4] - [5, 6]

TypeError: unsupported operand type(s) for -: ‘list’ and ‘list’

The word “operand” means “thing that an operator operates on”!

Or when two types can’t work together with an operator:

[2, 3, 4] + 5


—————————————————————————

TypeError Traceback (most recent call last)

<ipython-input-39-84117f41979f> in <module>()

—-> 1 [2, 3, 4] + 5

TypeError: can only concatenate list (not “int”) to list

Just as in Mathematics, operators have a built-in precedence, with brackets used to force an order of operations:

print(2 + 3 * 4)


14

print((2 + 3) * 4)


20

Supplementary material: http://www.mathcs.emory.edu/~valerie/courses/fall10/155/resources/op_precedence.html