title: Does calling .join() on a co-routine job wait for it's children to complete?
body: <p>I am trying to understand parent/child relationship between jobs, so this main function</p>
  <pre><code>fun main(args: Array&lt;String&gt;) = runBlocking {
      val outer = launch {
          launch {
              repeat(1000) {
                  print('.')
                  delay(1)
              }
          }
      }
      outer.join()
      println(&quot;Finished&quot;)
  }
  </code></pre>
  <p>according to the video I'm watching, says <code>Finished</code> should be printed and <code>main</code> should return before all <code>1000 dots</code> are printed.</p>
  <p>Instead I'm seeing all the dots printed, and then <code>Finished</code> printed</p>
  <blockquote>
  <p>........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................Finished</p>
  </blockquote>
  <p>Is the video wrong?</p>