This example shows how Kotlin coroutines use async and await to run tasks at the same time and wait for their results. First, the main coroutine starts with runBlocking. Then two async tasks launch: one delays 1000ms and returns 10, the other delays 500ms and returns 20. Both run concurrently. Await suspends until each task finishes, first deferred2 after 500ms, then deferred1 after 1000ms. After both complete, their results are added and printed. This saves time compared to running tasks one after another. The execution table tracks each step, showing task states and when results are ready. The variable tracker shows how deferred1, deferred2, and result change over time. Key moments clarify why async runs tasks together, why await is needed, and how order of awaiting affects timing. The quiz tests understanding of task states and result timing. The snapshot summarizes the main points for quick review.