Sync observables created from a synchronous source will emit values synchronously, so the observers will receive values in the order of subscription.
The source iterable is traversed for each observer subscribed. For example, the size of source iterable is M, there are N observers, so the traversal times is M*N. This is explained in RxJS5 Manual:
Plain Observables are unicast (each subscribed Observer owns an independent execution of the Observable)
let sub = Rx.Observable.range(0, 3);
sub.subscribe(value => console.log(`observer 1: ${value}`));
sub.subscribe(value => console.log(`observer 2: ${value}`));