To expand on Giovanni's answer a bit. Yes, a Subject is an Observable and also an Observer, this makes it useful as a leaf point if we are forced to resort to manually pushing events into our streams.
The other place you will mainly find Subjects is in multicasting behavior. Since by default most Observables are unicast, we can use Subjects when we want to share an Observable between multiple Observers/Subscribers without the overhead of running the Observable multiple times. This usually comes in the form of one of the publish* operators so you shouldn't have to use the Subject directly in that case, but it is always good to understand what is happening under the hood so to speak.
expectation is the root of all heartache - shakespeare. tiny ad: