what is coroutine in unity code example

Example 1: unity coroutine

void Start() {
  StartCoroutine("func"); // Start coroutine named "func"
}

IEnumerator func() {
  Debug.Log("Hello");
  yield return new WaitForSecondsRealtime(1); //Wait 1 second
  Debug.Log("World");
}

Example 2: c# unity coroutine

IEnumerator Fade() 
{
    for (float ft = 1f; ft >= 0; ft -= 0.1f) 
    {
        Color c = renderer.material.color;
        c.a = ft;
        renderer.material.color = c;
        yield return new WaitForSeconds(.1f);
    }
}