What happens if we return a Coroutine in a Coroutine?

Hi everyone,

I have a piece of code and I will be very thankful if you explain what happens here:

    private IEnumerator C1()
    {
//some other stuff
       yield return StartCoroutine(C2());
//some other stuff
    }

    private IEnumerator C2()
    {
//some other stuff
yield return null;
//some other stuff
    }

we start Coroutine C1 in Start function.

The question is , does the C2 coroutine execute alongside the C1 coroutine? or the C1 coroutine waits for C2 coroutine to finish its stuffs and then continues its own stuff?

C1 will not continue until C2 finishes. You can see a similar example at Unity - Scripting API: MonoBehaviour.StartCoroutine