The same variable can be assigned to different values of different types.
Some operations only work on some types
Python will try to make things work, even if they don't make sense.
In this case, it makes it work by converting the True and False to numbers and then adds them.
You can prove it like this
Sometimes, even Python must refuse the operation as it won't make sense.
Types are great as the author of a function can specify which types of data the function is designed to work with.
Sometimes we can convert types
the function str() takes a type and tries to convert it to a string.
Sometimes we can't convert the type, in this case bob cannot be a number
However we can convert strings that are valid numbers into a number, in this case it is the string '12' not the number 12.