or more general:

youFunction[intervals__] := Composition[
    DeleteCases[#, Interval[]] &amp;,
    DeleteDuplicates,
    (IntervalIntersection @@ # &amp;) /@ # &amp;,
    Subsets[#, {2}] &amp;,
    Join[##] &amp;
    ][intervals];

intervalsA = Interval /@ {{1, 2}, {3, 4}, {5, 7}, {8, 8.5}};
intervalsB = Interval /@ {{1.5, 3.5}, {4.1, 6}, {9, 10}};
youFunction[intervalsA, intervalsB]
(*{Interval[{1.5, 2}], Interval[{3, 3.5}], Interval[{5, 6}]}*)


Intersection of lists of disjoint intervals
I've recently started to learn some C# scripting in Unity. I've been able to make my PlayerCube move around using Vector3 Transform.translations, but I want my camera to follow my cube while moving around, and it's not working since Unity can't find PlayerCube. How do I make make it so it understands that there's a PlayerCube? 

using UnityEngine;
using System.Collections;

public class CameraScript : MonoBehaviour {
    Player = GameObject.Find("PlayerCube");

    // Use this for initialization
    void Start () 
    {
    //  GameObject.Find(PlayerCube);
    }

    // Update is called once per frame
    void Update () 
    {
        Transform.LookAt (PlayerCube);
    }
}

