Why so serious about types?
We've seen that knowing what we're doing can save life. But joking aside, if we really think before writing our applications, it can really help. Our programs consist of two ingredients:
Data | Operations
We can perform operations on the data available. At the same time, not all operations can be performed on all sorts of data. That's what difference types make. You don't want to perform an addition operation between an Integer and a String literal. That's why the compiler does not allow us to do that. Even if it assumes you're trying to concatenate the string with the literal, it's not going to give you a result that's not meaningful. That's why defining types make sense.
Let's discuss a few terms that we just mentioned. It's really good that Scala is a statically typed language because it provides us compile time type safety. The code that we write is less prone to runtime errors, because we were so smart and we wrote it that way (we'll learn about...