One programming paradigm that we haven't talked about so far but that Angular heavily relies on/encourages is called Reactive Programming (RP) or, more specifically, Functional Reactive Programming (FRP).
RP is not new at all; its principles have been described and studied since the early 1970s. RP and FRP have gained a lot of traction in recent years thanks to the rise of microservice-based architectures and the decline of Moore's law (https://www.scientificamerican.com/article/end-of-moores-law-its-not-just-about-physics). With the now much slower yearly increase in raw CPU power, the alternative is to develop systems that can take advantage of more CPUs or CPU cores through parallelism and workload distribution.
The RP paradigm is based on the idea that, most of the time, we can treat/manipulate inputs and outputs as streams of events/data...