This chapter showed you that asynchronous code can be hard to understand and reason about, especially when a lot of code is running at the same time; it can be easy to lose track of what you're doing. You also learned that Operations are a convenient way to reduce complexity in your application, resulting in code that is easier to read, change, and maintain. When an operation depends on multiple other Operations to be completed, it can be extremely convenient to use OperationQueue, as it dramatically reduces the complexity of the code you write.
It's been mentioned before, but if you intend to make use of operations in your app, make sure to check out Apple's Demonstration of Advanced Operations from WWDC 2015. Operations are capable of far more than you've seen in this chapter, and it's highly recommended to see how Apple uses operations...