How to determine order of object list collection from scene

I assumed this would take the objects from the scene in order listed on Hierarchy but no??
What method?
I have hero1 hero2 hero3 on scene view 1st to last so I though it would set
heroes[0] to hero1
heroes[1] to hero2
heroes[3] to hero3

but it adds the object to the list in a way that I do not understand


    GameObject[] objects = GameObject.FindGameObjectsWithTag("HeroPrefab");
            foreach (GameObject tempObjects in objects)
                Vector3 ps = tempObjects.transform.position;

This can be used if you don’t need to do it repeatedly… like every frame