WaitForSeconds waits more than expected

When I complete the level, it must show 'Level Completed!" text and wait for 5 seconds then start next level.

private void showSuccess() {
         levelCompleted.SetActive (true);
         StartCoroutine("waitForNextLevel");
}

IEnumerator waitForNextLevel() {
         Debug.Log ("Start time: " + Time.time);
         yield return new WaitForSeconds (5);
         Debug.Log ("End time: " + Time.time);
         prepareTheLevel ();
}

However, the text appears successfully, the game waits for 5 seconds, and the text dissappears. Then it waits another 5 seconds and start the next level.

I want it wait only 5 seconds without hiding the text.

Any ideas?

Okay my issue was solved. showSuccess() method was called by a method which is running on Update() method. I have moveEnabled boolean that is false when showSuccess() is called. So I put an if clause something like below

void Update() {
    blaMethod();
}

void blaMethod() {
    if(moveEnabled) {
        //do controls
        if(blala) {
            showSuccess()
        }
    }
}

if(moveEnabled) clause prevents showSuccess being called in vain.