title: What is pipe for in RxJS?
body: <p>I think I have the base concept, but there are some obscurities</p>
  <p>So in general this is how I use an <code>Observable</code>:</p>
  <pre class="lang-js prettyprint-override"><code>observable.subscribe(x =&gt; {
  
  })
  </code></pre>
  <p>If I want to filter data I can use this:</p>
  <pre class="lang-js prettyprint-override"><code>import { first, last, map, reduce, find, skipWhile } from 'rxjs/operators';
  observable.pipe(
      map(x =&gt; {return x}),
      first()
      ).subscribe(x =&gt; {
  
  })
  </code></pre>
  <p>I can also do this:</p>
  <pre class="lang-js prettyprint-override"><code>import 'rxjs/add/operator/map';
  import 'rxjs/add/operator/first';
  
  observable.map(x =&gt; {return x}).first().subscribe(x =&gt; {
  
  })
  </code></pre>
  <p>So my questions are:</p>
  <ol>
  <li>What is the difference?</li>
  <li>If there is no difference, why the function <code>pipe</code> exists?</li>
  <li>Why those functions need different imports?</li>
  </ol>