Debug.Log in Update() appearing before Debug.Log in Start()

I have two debug.logs. One in Update, and another in Start. But in the console, the one in Update appears after the one in Start, and the code in Update runs before the code in Start, which is what is breaking it all for me.

Here it is (sorry for the length):

    bool gameHasEnded = false;
    static public bool colorchange;

    public Camera cam;

    static Color currentColor;

    

    void Start()
    {
        if (colorchange == true)
        {
            currentColor = Random.ColorHSV(0f, 1f, 1f, 1f, 0.5f, 1f);
            cam.backgroundColor = currentColor;
            Debug.Log("colochange is true");
        }
        else if(colorchange == false && initialized == false)
        {
            Debug.Log("colorchange is false");
            colorchange = true;
            cam.backgroundColor = currentColor;
        }
    }

    static public bool initialized = true;

    void Update()
    {
        if(initialized == true)
        {
            initialized = false;
            Debug.Log("initialized is true");
            cam.backgroundColor = new Color32(56, 64, 72, 0);
        }
    }

    public void EndGameFirstLevel()
    {
        if(gameHasEnded == false)
        {
            gameHasEnded = true;
            initialized = true;
            if(initialized == true)
            {
                Debug.Log("initialized is true within the function");
            }
            Debug.Log("first level gameover");
            Restart();
        }
    }

    public void EndGame()
    {
        if(gameHasEnded == false)
        {
            gameHasEnded = true;
            //Debug.Log("gameover");
            Restart();
        }
    }

    public void LoadNextLevel()
    {
        colorchange = true;
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }

    void Restart()
    {
        colorchange = false;
        SceneManager.LoadScene(SceneManager.GetActiveScene().name);
    }

If you need any info, feel free to ask anything. Thanks for any input.

Nevermind, fixed the problem by doing this:

    bool gameHasEnded = false;
    static public bool colorchange;
    static public bool initialized = true;

    public Camera cam;

    static Color currentColor;

    void Start()
    {
        if (colorchange == true)
        {
            currentColor = Random.ColorHSV(0f, 1f, 1f, 1f, 0.5f, 1f);
            cam.backgroundColor = currentColor;
            Debug.Log("colochange is true");
        }
        else if(colorchange == false && initialized == false)
        {
            Debug.Log("colorchange is false");
            colorchange = true;
            cam.backgroundColor = currentColor;
        }//changed here
        else if(initialized == true)
        {
            initialized = false;
            Debug.Log("initialized is true");
            cam.backgroundColor = new Color32(56, 64, 72, 0);
        }
    }

    public void EndGameFirstLevel()
    {
        if(gameHasEnded == false)
        {
            gameHasEnded = true;
            initialized = true;
            if(initialized == true)
            {
                Debug.Log("initialized is true within the function");
            }
            Debug.Log("first level gameover");
            Restart();
        }
    }

    public void EndGame()
    {
        if(gameHasEnded == false)
        {
            gameHasEnded = true;
            //Debug.Log("gameover");
            Restart();
        }
    }

    public void LoadNextLevel()
    {
        colorchange = true;
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }

    void Restart()
    {
        colorchange = false;
        SceneManager.LoadScene(SceneManager.GetActiveScene().name);
    }